package com.njmd.mdbs.web.service;

import java.util.List;

import com.njmd.framework.base.BaseCrudService;
import com.njmd.mdbs.web.entity.sys.SysPermission;

/**
 * 菜单管理接口
 * @author: zhujie
 * @since 2013.10.12
 * 
 */
public interface SysPermissionService extends BaseCrudService<SysPermission, Long>
{
	/**
	 * 根据系统类型查询菜单信息
	 * 
	 * @param systemId
	 *            　系统类型
	 * @return　权限信息集合
	 * @throws Exception
	 */
	List<SysPermission> findMenuBySystemId(Integer systemId) throws Exception;

	/**
	 * 根据系统类型获得所有菜单集合
	 * 
	 * @param systemId
	 *            　系统类型
	 * @return
	 * @throws Exception
	 */
	List<SysPermission> findLevel1Menu(Integer systemId) throws Exception;

	/**
	 * 通过菜单的父菜单id和菜单类型找到菜单信息
	 * 
	 * @param parentId
	 *            父id
	 * @param permissionType
	 *            菜单类型
	 * @return 权限信息集合
	 * @throws Exception
	 */
	List<SysPermission> findMenuByparentIdAndType(Long parentId, Long permissionType) throws Exception;

	/**
	 * 改变菜单的排序
	 * 
	 * @param menuId
	 * @param sortOffset
	 *            1－下移 -1－上移
	 * @throws Exception
	 */
	void changSort(Long menuId, int sortOffset) throws Exception;

	/**
	 * <p>
	 * Description:[把菜单集合进行排序]
	 * </p>
	 * 
	 * @param list
	 * @return
	 * @throws Exception
	 */
	List<SysPermission> sortList(List<SysPermission> list) throws Exception;
	/**
	 * 选择上级菜单下拉框、排除本身   与  自己的下级菜单   
	 * 
	 * 附：编辑页面的下拉框显示的数据与当先需要编辑的菜单下级菜单的等级个数有关
	 * @param id 本身ID
	 * @return
	 * @throws Exception
	 */
	List<SysPermission>  findAllNoId(Long id) throws Exception;
	/**
	 * 上下移动
	 * @param id  根据需移动Id的到整条数据
	 * @param upORdown  -1   上移   ；    1   下移
	 * @return
	 * @throws Exception 
	 */
	int upORdown(Long id , int upORdown) throws Exception;
	//不能够向上移动箭头的菜单
	List<SysPermission> findUp();
	//不能够向下移动箭头的菜单
	List<SysPermission> findDown();
}
